home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1998-10-30 | 76.4 KB | 1,519 lines
ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) NNNNAAAAMMMMEEEE synthpreset - MMMMIIIIDDDDIIII synthesizer preset file DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN _s_y_n_t_h_p_r_e_s_e_t files are ASCII text files containing all the information necessary to configure a preset in the MIDI synthesizer. This includes all information about sound sample files, keyboard mapping, detuning, looping, filtering, modulation, etc. PPPPRRRREEEESSSSEEEETTTT IIIIDDDDEEEENNNNTTTTIIIIFFFFIIIIEEEERRRRSSSS The current midi synthesizer identifies preset files via a string which must be used as the first line of the file. Following this is the word PRESET in all capital letters, on its own line: ####SSSSyyyynnnntttthhhh PPPPrrrreeeesssseeeetttt vvvv1111....0000 PPPPRRRREEEESSSSEEEETTTT Following this are lables for the various sections of the preset. Any line beginning with either a '#' character or a '!' character will be treated as a comment and ignored by the parser. HHHHEEEEAAAADDDDEEEERRRR,,,, LLLLAAAABBBBEEEELLLL,,,, AAAANNNNDDDD VVVVAAAALLLLUUUUEEEE SSSSYYYYNNNNTTTTAAAAXXXX Synthesizer preset files are structured as a series of nested labels and values. The header for each section are unquoted character strings without trailing colons. Some sections may or must contain subsections which begin (and usually end) with additional labels. The preset parameter tokens are unquoted character strings with trailing colons. Examples of each of these can be found below. The parameter values themselves can take four forms: DDDDoooouuuubbbblllleeee----pppprrrreeeecccciiiissssiiiioooonnnn ffffllllooooaaaattttiiiinnnngggg ppppooooiiiinnnntttt vvvvaaaalllluuuueeeessss Examples: 23.0045, -0.0001, 99.0 IIIInnnntttteeeeggggeeeerrrr vvvvaaaalllluuuueeeessss Examples: 0, -16, 44100 QQQQuuuuooootttteeeedddd ssssttttrrrriiiinnnngggg vvvvaaaalllluuuueeeessss Examples: "/disk2/sounds/violin_lowG.aifc", "None", "MultipleReset" BBBBoooooooolllleeeeaaaannnn vvvvaaaalllluuuueeeessss These are a special subset of the quoted string values. Boolean values are only used to set a parameter to True or False, and the appropriate quoted strings are "True" and "False". VVVVOOOOIIIIDDDD PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS In addition, a small number of parameters take no value whatsoever. These tokens are not followed by a colon. An example of such a parameter is VVVVooooiiiicccceeeeEEEExxxxcccclllluuuussssiiiivvvveeeeNNNNooooEEEEvvvveeeennnnVVVVaaaalllluuuueeeessss, which indicates that the voice exclusion range specified does not include the even-numbered keys. PPPPaaaaggggeeee 1111 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS One class of parameters merits special attention: the parameters which specify the source for some form of parameter modulation, such as oscillator frequency modulation (vibrato). These all the the form XXXXModulationSource:, or in older files, XXXXControlSource:, where XXXX represents the parameter being modulated. The parameter value will always be a quoted string. The complete set of these source parameters divides into three catagories: _s_y_n_t_h_e_s_i_s _m_o_d_u_l_e_s, _c_h_a_n_n_e_l _v_o_i_c_e _p_a_r_a_m_e_t_e_r_s, and _M_I_D_I _c_o_n_t_r_o_l_l_e_r_s. The breakdown is as follows: MMMMoooodddduuuulllleeee SSSSoooouuuurrrrcccceeeessss "None" "Envelope1" "Envelope2" "Envelope3" "Envelope4" "Oscillator1" "Oscillator2" "Oscillator3" "Oscillator4" CCCChhhhaaaannnnnnnneeeellll VVVVooooiiiicccceeee PPPPaaaarrrraaaammmmeeeetttteeeerrrrssss "NoteOffVelocity" "NoteOnVelocity" "PolyKeyPressure" "ChannelPressure" "PitchBendChange" "KeyPosition" MMMMIIIIDDDDIIII CCCCoooonnnnttttrrrroooolllllllleeeerrrr PPPPaaaarrrraaaammmmeeeetttteeeerrrrssss "BankSelect" "ModulationWheel" "BreathController" "FootController" "PortamentoTime" "DataEntry" "ChannelVolume" "Balance" "Pan" "ExpressionController" "EffectControl1" through "EffectControl12" "GeneralPurpose1" through "GeneralPurpose8" "DamperPedal" "Portamento" "Sostenuto" "SoftPedal" "LegatoFootSwitch" "Hold2" "SoundController1" through "SoundController10" "Effects1Depth" through "Effects5Depth" The depth of the modulation from any of these sources is set via a PPPPaaaaggggeeee 2222 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) parameter XXXXModulationDepth: (or XXXXControlDepth:), where XXXX is the same prefix as used in the ModulationSource parameter. The depth parameter for each source must follow the parameter for the source itself with no intervening parameters. The value is always specified as a double-precision floating point. The initial levels of the Channel Voice and MIDI Controller sources are floating point values scaled to the range [0.0 - 1.0], or in the case of symmetrical parameters such as Pan, [-1.0 - 1.0]. Each parameter which accepts some form of modulation input may have up to five modulation sources. The total modulation will be equal to the sum of these five after each has been scaled by its ModulationDepth. Note that a few of these modulation sources are _s_t_a_t_i_c for the duration of a voice, and the remainder are _d_y_n_a_m_i_c. For example, "NoteOnVelocity" is fixed at voice initialization time, as is "KeyPosition". Some modulation inputs only respond to _s_t_a_t_i_c sources. PPPPRRRREEEESSSSEEEETTTT TTTTEEEERRRRMMMMIIIINNNNOOOOLLLLOOOOGGGGYYYY Several terms will be used in the parameter descriptions below. SSSSpppplllliiiitttt A single sound sample as it is used within a preset oscillator, including its keyboard mapping range, base pitch information, and velocity mapping information. Most MIDI "instruments" are made up of several splits which fill up the available keyboard space for that instrument's total range. SSSSuuuussssttttaaaaiiiinnnn SSSSeeeeggggmmmmeeeennnntttt The portion of a sound sample which is played during the time that a key is held down on the MIDI keyboard. This may or may not include a LLLLoooooooopppp. RRRReeeelllleeeeaaaasssseeee SSSSeeeeggggmmmmeeeennnntttt The portion of a sound sample which is played after the triggering MIDI keyboard key has been released. This may or may not include a LLLLoooooooopppp. SSSSaaaammmmpppplllleeee LLLLoooooooopppp The portion of the sound sample which will be repeated over and over to allow the sound to sustain for as long as a key is held down, or to allow the sound to fade for as long as the release time indicates. Currently, only two loops are supported, one for the sustain segment and one for the release segment. Envelopes may also be looped. See the EEEEnnnnvvvveeeellllooooppppeeee section for details. PPPPRRRREEEESSSSEEEETTTT SSSSEEEECCCCTTTTIIIIOOOONNNNSSSS AAAANNNNDDDD PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS The following is a list of the section headers, followed by the parameters which may be used in each section, followed by the default value in brackets. Note that many of the parameters, such as GGGGaaaaiiiinnnn::::, appear in many different sections. Parameters in higher levels (such as Oscillator) modify the values in the lower levels (such as Sample). In PPPPaaaaggggeeee 3333 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) this way, a parameter may be set at the higher level when there is no need to differentiate them at a lower level. Parameters listed after one another without intervening text are equivalent, i.e., either form can be used in the preset file. IIIInnnnffffoooorrrrmmmmaaaattttiiiioooonnnn This section contains strings such as the preset's name and author, and in the future may include comments, creation date, etc. PPPPrrrreeeesssseeeettttNNNNaaaammmmeeee:::: The name of the preset, such as "Muted Trumpet". ["Default"] AAAAuuuutttthhhhoooorrrr:::: The name of the person, as a quoted string, who created the preset file. [""] GGGGeeeennnneeeerrrraaaallll The General section contains preset parameters such as VoiceMode and VelocityCurve, which modify the preset as a whole. GGGGaaaaiiiinnnn:::: The overall volume for this preset relative to other presets. [1.0] PPPPiiiittttcccchhhhBBBBeeeennnnddddRRRRaaaannnnggggeeee:::: The maximum interval, in semitones, which the pitch bend wheel can transpose a voice when the wheel is at maximum excursion. The interval will be symmetrical about zero. [2.0] PPPPiiiittttcccchhhhBBBBeeeennnnddddQQQQuuuuaaaannnnttttiiiizzzzeeeeVVVVaaaalllluuuueeee:::: The increment, in semitones, into which the pitch bend should be quantized. For example, a value of 0.1 would cause the pitch bend to jump in 1/10 semitone increments. [0.0] VVVVooooiiiicccceeeePPPPaaaannnnMMMMooooddddeeee:::: The type of panning desired for each voice. The options are: """"CCCCeeeennnntttteeeerrrr"""" No panning, no response to MIDI pan messages. """"CCCCoooonnnnssssttttaaaannnntttt"""" Pan value set in preset, no response to MIDI. """"MMMMIIIIDDDDIIII"""" The default. Panning set via MIDI pan messages. """"CCCCoooonnnnssssttttaaaannnnttttSSSSwwwwaaaapppp"""" Alternating channels, value set in preset. PPPPaaaaggggeeee 4444 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) """"MMMMIIIIDDDDIIIISSSSwwwwaaaapppp"""" Alternating channels, value set via MIDI pan. VVVVooooiiiicccceeeePPPPaaaannnnCCCCuuuurrrrvvvveeee:::: The type of curve used to determine the relative amplitude of the left and right channels during a pan. The options are: """"LLLLiiiinnnneeeeaaaarrrrPPPPoooowwwweeeerrrr"""" The volume for the right channel will be set to (1 - left). """"CCCCoooonnnnssssttttaaaannnnttttPPPPoooowwwweeeerrrr"""" The default. Relative levels of the two channels are determined based on power, not amplitude. The result is a more consistant apparent volume as the sound moves from left to right. PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeeeXXXX:::: Source for modulation of voice's stereo pan position (X dimension). ["None"] PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhhXXXX:::: PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhhXXXX:::: Depth of above modulation. Maximum pan is +-1.0, so any higher values are truncated. [0.0] PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeeeYYYY:::: Source for modulation of Y dimension (front/back) of a voice's quad pan position. Only used when preset's OOOOuuuuttttBBBBuuuussss is """"QQQQuuuuaaaadddd1111"""" or """"QQQQuuuuaaaadddd2222"""". ["None"] PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhhYYYY:::: Depth of above modulation. [0.0] VVVVooooiiiicccceeeeEEEExxxxcccclllluuuussssiiiivvvveeeeRRRRaaaannnnggggeeeeVVVVaaaalllluuuueeeeLLLLoooowwwweeeerrrr:::: Lower bound, specified as a MIDI key number, of the exclusive range for this preset. Any key played which is within the exclusive range will terminate any other voices sounding in that range. This is typically used for percussion sounds such as high-hat cymbals. If both are zero, no exclusive range will be used. [0] PPPPaaaaggggeeee 5555 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) VVVVooooiiiicccceeeeEEEExxxxcccclllluuuussssiiiivvvveeeeRRRRaaaannnnggggeeeeVVVVaaaalllluuuueeeeUUUUppppppppeeeerrrr:::: Upper bound, specified as a MIDI key number, of the exclusive range for this preset. [0] VVVVooooiiiicccceeeeEEEExxxxcccclllluuuussssiiiivvvveeeeRRRRaaaannnnggggeeeeNNNNooootttteeeeLLLLoooowwwweeeerrrr:::: Lower bound, specified as a MIDI note, such as "A5" or "C#2", for the exclusive range. [""] VVVVooooiiiicccceeeeEEEExxxxcccclllluuuussssiiiivvvveeeeRRRRaaaannnnggggeeeeNNNNooootttteeeeUUUUppppppppeeeerrrr:::: Upper bound, specified as a MIDI note, such as "A5" or "C#2", for the exclusive range. [""] VVVVooooiiiicccceeeeMMMMooooddddeeee:::: The voice assignment mode. This determines how subsequent voices are allocated as notes are played on a MIDI channel. The possible values are: """"RRRRoooottttaaaatttteeee"""" Voice pool is cycled; if no available voices, no voice will play. """"RRRRoooottttaaaatttteeeeSSSStttteeeeaaaallll"""" The default. Voice pool is cycled through, and if none are available, one will be "stolen" from the active voices. """"RRRReeeeaaaassssssssiiiiggggnnnn"""" Special case; new note will only play if another voice is currently playing the same pitch, in which case the old voice will be "reassigned" to the new note event. """"RRRReeeeaaaassssssssiiiiggggnnnnSSSStttteeeeaaaallll"""" Not currently implemented. """"MMMMoooonnnnooooPPPPrrrriiiioooorrrriiiittttyyyyLLLLaaaassssttttNNNNooootttteeee"""" Mono mode, most recently played note cuts off all others. """"MMMMoooonnnnooooPPPPrrrriiiioooorrrriiiittttyyyyLLLLaaaassssttttNNNNooootttteeeeSSSStttteeeeaaaallll"""" Not implemented. Acts the same as previous. VVVVooooiiiicccceeeeLLLLiiiimmmmiiiitttt:::: Specifies the maximum number of simultaneous voices allowed on a given MIDI channel for this preset. This is extremely useful for controlling the CPU load for MIDI presets with long sustains, like Pianos, Harps, and Guitars. [127] PPPPaaaaggggeeee 6666 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) VVVVeeeelllloooocccciiiittttyyyyCCCCuuuurrrrvvvveeee:::: Specifies the mapping between the keyboard velocity (0 - 127) and the resulting amplitude. In all cases below, the variable xxxx is the key velocity scaled to fit between 0.0 and 1.0, and '**' indicates 'to the power of'. The Possible values are: """"CCCCoooonnnnssssttttaaaannnntttt"""" Key velocity ignored, velocity set to VVVVeeeelllloooocccciiiittttyyyyCCCCoooonnnnssssttttaaaannnntttt::::. """"LLLLiiiinnnneeeeaaaarrrr"""" The default. Amplitude = x """"IIIInnnnvvvveeeerrrrsssseeeeLLLLiiiinnnneeeeaaaarrrr"""" Amplitude = 1.0 - x """"SSSSqqqquuuuaaaarrrreeee"""" Amplitude = x ** 2 """"IIIInnnnvvvveeeerrrrsssseeeeSSSSqqqquuuuaaaarrrreeee"""" Amplitude = 1.0 - ((1 - x) ** 2) """"CCCCuuuubbbbeeee"""" Amplitude = x ** 3 """"IIIInnnnvvvveeeerrrrsssseeeeCCCCuuuubbbbeeee"""" Amplitude = 1.0 - ((1 - x) ** 3) """"EEEExxxxppppoooonnnneeeennnnttttiiiiaaaallll"""" An exponential curve approximated with an averaging of the Square and the Cube curves. """"IIIInnnnvvvveeeerrrrsssseeeeEEEExxxxppppoooonnnneeeennnnttttiiiiaaaallll"""" Exponential curve with opposite concavity; i.e., bulges up rather than down. """"LLLLooooggggaaaarrrriiiitttthhhhmmmmiiiicccc"""" Logarithmic curve with a complex formula. Curve rises more steeply at first, then levels off gradually. """"IIIInnnnvvvveeeerrrrsssseeeeLLLLooooggggaaaarrrriiiitttthhhhmmmmiiiicccc"""" Logarithmic curve with opposite concavity; i.e., bulges down rather PPPPaaaaggggeeee 7777 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) than up. In terms of expressivity, the Constant setting is the least, followed by Logarithmic, Linear, Square, Exponential, and Cube. The Inverse settings follow approximately the same sequence. VVVVeeeelllloooocccciiiittttyyyyCCCCoooonnnnssssttttaaaannnntttt:::: If VelocityCurve: is set to "Constant", the value will be the constant. [127] KKKKeeeeyyyybbbbooooaaaarrrrddddTTTTrrrraaaacccckkkkiiiinnnnggggCCCCoooonnnnssssttttaaaannnntttt:::: This value determines the pitch interval between successive keys on the keyboard. A value of 1.0 is default, indicating 1.0 semitone per key. A value of 2.0 would cause the pitch to go up by 2.0 semitones per key. A value of 0.1 would cause each successive key to raise the pitch by 1/10th of a semitone, resulting in a 120- note-per-octave scale. NNNNOOOOTTTTEEEE:::: The tracking occurs on a per split basis. Each sample root pitch forms the starting point for a scale. To achieve a complete keyboard scale in an alternate tuning, the sample root pitches would need to be adjusted accordingly. [1.0] TTTTrrrraaaannnnssssppppoooosssseeee:::: An integer value indicating the number of semitones to transpose the oscillator pitch up or down. TTTTrrrraaaannnnssssppppoooosssseeee behaves differently from TTTTuuuunnnneeee in that it will interact with the sample keynote mapping whereas the TTTTuuuunnnneeee parameter does not. [0] SSSSaaaammmmpppplllleeeeSSSSeeeeaaaarrrrcccchhhhPPPPaaaatttthhhh:::: A colon-separated list of directories which should be searched for samples prior to searching the system default directories. For example, "/disk/sounds:/tmp/soundfiles". A single directory should not have a trailing colon. [NULL] OOOOuuuuttttBBBBuuuussss:::: The output assignment for this preset's voices. Midisynth has eight output busses, which are assigned sequentially to each available audio port output channel. If mmmmiiiiddddiiiissssyyyynnnntttthhhh is started in 2-channel mode (the default), only the first two busses are useful; starting it in 8-channel mode will allow all eight busses to be used. The currently supported parameters are: """"SSSStttteeeerrrreeeeoooo1111"""" Voices panned across busses (and channels) 1 and 2. The default. """"SSSStttteeeerrrreeeeoooo2222"""" Voices panned across busses (and channels) 3 and 4. Only useful in 4- or 8-channel mode. PPPPaaaaggggeeee 8888 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) """"SSSStttteeeerrrreeeeoooo3333"""" Voices panned across busses (and channels) 5 and 6. Only useful in 8-channel mode. """"SSSStttteeeerrrreeeeoooo4444"""" Voices panned across busses (and channels) 7 and 8. Only useful in 8-channel mode. """"QQQQuuuuaaaadddd1111"""" Voices panned across busses 1 through 4. Panning defined as X/Y values using PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnXXXX and PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnYYYY for static values, and PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeeeXXXX, PPPPaaaannnnPPPPoooossssiiiittttiiiioooonnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeeeYYYY, etc., for controllable parameters. Only useful in 4- or 8-channel mode. """"QQQQuuuuaaaadddd2222"""" Voices panned across busses 5 through 8. Same rules for panning as above. Only useful in 8-channel mode. OOOOsssscccciiiillllllllaaaattttoooorrrrNNNN Parameters for the Nth voice oscillator. Numbering starts with 1, up to a maximum of 4. Parameters: GGGGaaaaiiiinnnn:::: A fixed gain offset for the oscillator signal. This is generally used only for oscillators which function as control sources; audio oscillator gains are adjusted via the GGGGaaaaiiiinnnnCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh parameter, below. [0.0] GGGGaaaatttteeeeEEEElllleeeemmmmeeeennnntttt:::: If this parameter is true, this oscillator will be examined to determine if a given voice should continue to sound, or if the voice should be considered "finished" and shut off. If false, the state of this oscillator will be ignored. ["True"] MMMMeeeetttthhhhoooodddd:::: IIIInnnntttteeeerrrrppppoooollllaaaattttiiiioooonnnn:::: Specifies the interpolation method to be used to transpose the sound samples up and down on the keyboard. Possible values are: """"FFFFiiiixxxxeeeedddd"""" No transposition. Oscillator sounds at root pitch only. """"AAAAddddddddDDDDrrrroooopppp"""" The default. Truncated table indexing. This is very useful for controlling oscillators and sometimes for audio oscillators which PPPPaaaaggggeeee 9999 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) are playing simple waveforms such as sine waves, but the output waveform is usually too distorted for audio oscillator use. """"LLLLiiiinnnneeeeaaaarrrr"""" Linear interpolative table indexing. This produces the best quality waveform for audio oscillators. It should not be used for control oscillators because it takes a larger amount of CPU cycles to compute. TTTTuuuunnnneeeeKKKKeeeeyyyybbbbooooaaaarrrrddddTTTTrrrraaaacccckkkkiiiinnnngggg:::: Indicates whether this oscillator will track the keyboard, i.e., whether its pitch will transpose up and down as different keys are pressed. This is the default for audio oscillators, but is often not used for control oscillators. ["True"] CCCCoooonnnnttttrrrroooollllEEEElllleeeemmmmeeeennnntttt:::: If "True", indicates that this oscillator is to be used an a control module, i.e., its output will modulate some other module's parameters. If "False", then this oscillator will be an audio oscillator, and its output will be summed in the signal mixer and added to the voice output. ["False"] GGGGaaaaiiiinnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: GGGGaaaaiiiinnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: Source for modulation of the oscillators's volume. See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["NoteOnVelocity"] GGGGaaaaiiiinnnnCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: GGGGaaaaiiiinnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: The depth of the previous modulation source. For most modulating sources, the resulting gain will be between 0.0 and GainModulationDepth. [1.0] TTTTuuuunnnneeeeCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: TTTTuuuunnnneeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: Source for modulation of the oscillators pitch (tuning). See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["None"] TTTTuuuunnnneeeeCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: TTTTuuuunnnneeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: The depth of the pitch modulation, in semitones. For symmetrical modulating waveforms, the pitch will rise this number of semitones above the base pitch, then fall to this number of semitones below the base pitch. [0.0] PPPPaaaaggggeeee 11110000 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) OOOOsssscccciiiillllllllaaaattttoooorrrr SSSSuuuubbbbsssseeeeccccttttiiiioooonnnnssss There are two possible subsections for Oscillator. SSSSiiiibbbblllliiiinnnngggg An optional subsection of Oscillator; contains parameters for up to 4 sibling oscillator outputs. These are duplicates of the oscillator waveform with optional detuning and (in the future) gain adjustments. The final sibling entry must be followed by the subsection termination lable EEEEnnnnddddSSSSiiiibbbblllliiiinnnnggggssss. TTTTuuuunnnneeee:::: Tuning factor, in semitones, for this sibling. [0.0] PPPPhhhhaaaasssseeee:::: Not yet implemented. SSSSaaaammmmpppplllleeeeSSSSeeeelllleeeeccccttttMMMMooooddddeeee:::: Not yet implemented. SSSSaaaammmmpppplllleeee A required subsection of Oscillator; contains parameters for each sound sample which is to be used as part of this voice as expressed through this oscillator. Any number of SSSSaaaammmmpppplllleeee listings may be used, but they must all be listed together and the final entry should be followed by the subsection termination label EEEEnnnnddddSSSSaaaammmmpppplllleeeessss. MMMMeeeemmmmoooorrrryyyyRRRReeeessssiiiiddddeeeennnntttt:::: Not yet implemented. CCCChhhhaaaannnnnnnneeeellllMMMMooooddddeeee:::: Not yet implemented. DDDDiiiirrrreeeeccccttttiiiioooonnnn:::: Indicates the direction the sample will be played. Possible values are: """"FFFFoooorrrrwwwwaaaarrrrdddd"""" Default. Sample will be played from beginning to end. """"BBBBaaaacccckkkkwwwwaaaarrrrdddd"""" Sample will be played from end to beginning (reversed). """"FFFFoooorrrrwwwwaaaarrrrddddAAAAnnnnddddBBBBaaaacccckkkkwwwwaaaarrrrdddd"""" Not yet implemented. SSSSuuuussssttttaaaaiiiinnnnSSSSttttaaaarrrrttttTTTTiiiimmmmeeee:::: Offset in seconds to the beginning of the sample's sustain segment. [0.0] PPPPaaaaggggeeee 11111111 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) SSSSuuuussssttttaaaaiiiinnnnEEEEnnnnddddTTTTiiiimmmmeeee:::: Offset in seconds to the end of the sample's sustain segment. [Sample duration]. RRRReeeelllleeeeaaaasssseeeeSSSSttttaaaarrrrttttTTTTiiiimmmmeeee:::: Offset in seconds to the beginning of the sample's release segment. [0.0] RRRReeeelllleeeeaaaasssseeeeEEEEnnnnddddTTTTiiiimmmmeeee:::: Offset in seconds to the end of the sample's release segment. [Sample duration] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppSSSSttttaaaarrrrttttTTTTiiiimmmmeeee:::: Offset in seconds to the beginning of the sample's sustain loop. [0.0] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppEEEEnnnnddddTTTTiiiimmmmeeee:::: Offset in seconds to the end of the sustain portion of the sample. [SustainEndTime]. RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppSSSSttttaaaarrrrttttTTTTiiiimmmmeeee:::: Offset in seconds to the beginning of the sample's release loop. [0.0] RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppEEEEnnnnddddTTTTiiiimmmmeeee:::: Offset in seconds to the end of the sample's release loop. [Sample duration] LLLLooooooooppppTTTTuuuunnnneeee:::: Amount in semitones to adjust the sample loops' pitch versus the unlooped portion. If the sample contains more than one loop, all will be adjusted. [0.0] LLLLooooooooppppGGGGaaaaiiiinnnn:::: Not yet implemented. LLLLooooooooppppGGGGaaaaiiiinnnnddddBBBB:::: Not yet implemented. SSSSuuuussssttttaaaaiiiinnnnGGGGaaaaiiiinnnn:::: Factor to multiply the sample's sustain segment by. [1.0] SSSSuuuussssttttaaaaiiiinnnnGGGGaaaaiiiinnnnddddBBBB:::: Amount in decibels to adjust the sample's sustain segment. [0.0] SSSSuuuussssttttaaaaiiiinnnnTTTTuuuunnnneeee:::: Amount in semitones to adjust the sample's sustain segment versus the release segment. [0.0] SSSSuuuussssttttaaaaiiiinnnnDDDDiiiirrrreeeeccccttttiiiioooonnnn:::: The direction for the sample's sustain segment. See DDDDiiiirrrreeeeccccttttiiiioooonnnn::::, above. ["Forward"] PPPPaaaaggggeeee 11112222 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) RRRReeeelllleeeeaaaasssseeeeGGGGaaaaiiiinnnn:::: Factor to multiply the sample's release segment by. [1.0] RRRReeeelllleeeeaaaasssseeeeGGGGaaaaiiiinnnnddddBBBB:::: Amount in decibels to adjust the sample's release segment. [0.0] RRRReeeelllleeeeaaaasssseeeeTTTTuuuunnnneeee:::: Amount in semitones to adjust the sample's release segment versus the sustain segment. [0.0] RRRReeeelllleeeeaaaasssseeeeDDDDiiiirrrreeeeccccttttiiiioooonnnn:::: The direction for the sample's release segment. See DDDDiiiirrrreeeeccccttttiiiioooonnnn::::, above. ["Forward"] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppTTTTuuuunnnneeee:::: Amount in semitones to adjust the sample's sustain loop pitch versus the unlooped portion(s). [0.0] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppGGGGaaaaiiiinnnn:::: Not yet implemented. SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppGGGGaaaaiiiinnnnddddBBBB:::: Not yet implemented. RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppTTTTuuuunnnneeee:::: Amount in semitones to adjust the sample's release loop pitch versus the unlooped portion(s). [0.0] RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppGGGGaaaaiiiinnnn:::: Not yet implemented. RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppGGGGaaaaiiiinnnnddddBBBB:::: Not yet implemented. NNNNooootttteeeeMMMMaaaappppVVVVaaaalllluuuueeeeBBBBaaaasssseeee:::: Specifies the base (original untransposed) pitch of a sound sample, in MIDI key number units. [60] NNNNooootttteeeeMMMMaaaappppVVVVaaaalllluuuueeeeLLLLoooowwwweeeerrrr:::: Specifies the lower limit of the keyboard range in which this sample will sound, as a MIDI key number. [1] NNNNooootttteeeeMMMMaaaappppVVVVaaaalllluuuueeeeUUUUppppppppeeeerrrr:::: Specifies the upper limit of the keyboard range in which this sample will sound, as a MIDI key number. [127] NNNNooootttteeeeMMMMaaaappppNNNNooootttteeeeBBBBaaaasssseeee:::: NNNNooootttteeeeMMMMaaaappppNNNNoooottttaaaattttiiiioooonnnnBBBBaaaasssseeee:::: Specifies the base (original untransposed) pitch of a sound sample, as a note name. ["C5"] PPPPaaaaggggeeee 11113333 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) NNNNooootttteeeeMMMMaaaappppNNNNooootttteeeeLLLLoooowwwweeeerrrr:::: NNNNooootttteeeeMMMMaaaappppNNNNoooottttaaaattttiiiioooonnnnLLLLoooowwwweeeerrrr:::: Specifies the lower limit of the keyboard range in which this sample will sound, as a note name ["C-1"] NNNNooootttteeeeMMMMaaaappppNNNNooootttteeeeUUUUppppppppeeeerrrr:::: NNNNooootttteeeeMMMMaaaappppNNNNoooottttaaaattttiiiioooonnnnUUUUppppppppeeeerrrr:::: Specifies the upper limit of the keyboard range in which this sample will sound, as a note name. ["G9"] VVVVeeeelllloooocccciiiittttyyyyMMMMaaaappppLLLLoooowwwweeeerrrr:::: Specifies the lower limit of the keyboard velocity range for which this sample will sound. [1] VVVVeeeelllloooocccciiiittttyyyyMMMMaaaappppUUUUppppppppeeeerrrr:::: Specifies the upper limit of the keyboard velocity range for which this sample will sound. [127] FFFFiiiilllltttteeeerrrrNNNN Parameters for the Nth voice filter. Numbering starts with 1 up to a maximum of 4. FFFFrrrreeeeqqqquuuueeeennnnccccyyyy:::: The filter cutoff frequency. This should be specified as a double- precision floating point between 0.0 and 1.0, where 0.0 is effectively a cutoff of 0.0 Hz., and 1.0 is the maximum cutoff frequency (set to 1/2 of the current audio sampling rate). [1.0] RRRReeeessssoooonnnnaaaannnncccceeee:::: The amount of resonance at the cutoff frequency, scaled between 0.0 (no resonance) and 1.0 (maximum resonance). Musically useful values are between 0.0 and 0.5. Resonance has no affect on first-order low- and high-pass filters. [0.0] GGGGaaaaiiiinnnnddddBBBB:::: A gain value, used to compensate for filter settings (such as very high resonance) which either amplify or attenuate the signal enough to affect the overall balance. Only implemented for second and higher order LowPass filters. [0.0] MMMMooooddddeeee:::: Selects the type of filter to be used. Possible values are: """"LLLLoooowwwwPPPPaaaassssssss"""" Low pass filter. """"HHHHiiiigggghhhhPPPPaaaassssssss"""" High pass filter. PPPPaaaaggggeeee 11114444 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) """"BBBBaaaannnnddddPPPPaaaassssssss"""" Band pass filter. """"BBBBaaaannnnddddSSSSttttoooopppp"""" Band stop or notch filter. OOOOrrrrddddeeeerrrr:::: Specifies the filter order (number of sections). The more sections, the steeper the slope of the cutoff point, and the greater the attenuation (suppression) of frequencies past the cutoff frequency. Possible values are """"1111sssstttt"""", """"2222nnnndddd"""", """"4444tttthhhh"""", and """"8888tttthhhh"""", indicating 1, 2, 4, and 8 sections, respectively. More sections require more CPU cycles. SSSSaaaattttuuuurrrraaaattttiiiioooonnnnRRRRaaaaiiiillll:::: SSSSaaaattttuuuurrrraaaattttiiiioooonnnnRRRRaaaaiiiillllLLLLoooowwwweeeerrrr:::: SSSSaaaattttuuuurrrraaaattttiiiioooonnnnRRRRaaaaiiiillllUUUUppppppppeeeerrrr:::: These three are not yet implemented. FFFFrrrreeeeqqqquuuueeeennnnccccyyyyCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: FFFFrrrreeeeqqqquuuueeeennnnccccyyyyMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: Source for modulation of the filter's cutoff frequency. See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["None"] FFFFrrrreeeeqqqquuuueeeennnnccccyyyyCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: FFFFrrrreeeeqqqquuuueeeennnnccccyyyyMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: Depth of the previous frequency modulation, as a fraction of the total frequency range (0.0 - 1.0). RRRReeeessssoooonnnnaaaannnncccceeeeCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: RRRReeeessssoooonnnnaaaannnncccceeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: Source for modulation of the filter's resonance. See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["None"] RRRReeeessssoooonnnnaaaannnncccceeeeCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: RRRReeeessssoooonnnnaaaannnncccceeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: Depth of the resonance modulation, as a fraction of the total resonance range (0.0 - 1.0). PPPPaaaaggggeeee 11115555 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) EnvelopeN Parameters for the Nth envelope generator. Numbering starts with 1, up to a maximum of 4. Envelopes may have up to 8 segments (8 levels separated by 7 times). Envelopes may also be looped; the segments within the specified loop will cycle continuously during the sustain and/or release portions of the envelope. The complete set of possible envelope parameters: LLLLeeeevvvveeeellllCCCCoooouuuunnnntttt:::: The total number of envelope levels. Value must be between 1 and 8, inclusive. [4] TTTTiiiimmmmeeee:::: Specify the time required to reach a level, starting with Time1 (time to move from Level0 to Level1). Each subsequent TTTTiiiimmmmeeee:::: entry will address a subsequent time, up to Time7. [Time0: 0.0; All others: 1.0] TTTTiiiimmmmeeeeNNNN:::: Specify the time to go from level (N-1) to level N. N must be between 1 and 7, and the entries _m_u_s_t be in ascending order. The level count of the envelope will be set to N + 1 for the maximum (final) value of N found. [Time0: 0.0; All others: 1.0] DDDDeeeellllaaaayyyyTTTTiiiimmmmeeee:::: An alternate way to specify the time it takes to go from level0 to level1. If both of these levels are set to zero, this will function as an envelope delay. This label cannot be used with AttackTime in the same envelope section. [0.0] AAAAttttttttaaaacccckkkkTTTTiiiimmmmeeee:::: An alternate way to specify the time it takes to go from level0 to level1. This label cannot be used with DelayTime in the same envelope section. [0.0] DDDDeeeeccccaaaayyyyTTTTiiiimmmmeeee:::: An alternate way to specify the time it takes to go from level1 (the attack peak value) to level2 (the sustain level). [1.0] RRRReeeelllleeeeaaaasssseeeeTTTTiiiimmmmeeee:::: An alternate way to specify the time it takes to go from level2 (the sustain level) to level3 (the release level). [1.0] TTTTiiiimmmmeeeeAAAAttttttttaaaacccckkkk1111:::: TTTTiiiimmmmeeeeAAAAttttttttaaaacccckkkk2222:::: TTTTiiiimmmmeeeeDDDDeeeeccccaaaayyyy1111:::: TTTTiiiimmmmeeeeDDDDeeeeccccaaaayyyy2222:::: PPPPaaaaggggeeee 11116666 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) TTTTiiiimmmmeeeeRRRReeeelllleeeeaaaasssseeee1111:::: TTTTiiiimmmmeeeeRRRReeeelllleeeeaaaasssseeee2222:::: These six labels allow for easy specification of the segment times for a six-level envelope like those found in many commercial synthesizers. For any given envelope section, they should be used together as a set and not mixed with the other label types. LLLLeeeevvvveeeellll:::: Specify the envelope value for a level, starting with level 0. Each subsequent Level: entry will address a subsequent level, up to level7 (eight levels in all). [Level0 and Level1: 1.0; All others: 0.0] LLLLeeeevvvveeeellllNNNN:::: Specify the envelope value for level N. Numbering starts with 0 (the resting state of the envelope) and has a maximum of 7. The final level always represents the post-release level. [Level0 and Level1: 1.0; All others: 0.0] SSSSttttaaaarrrrttttLLLLeeeevvvveeeellll:::: Alternate for LLLLeeeevvvveeeellll0000::::. [1.0] AAAAttttttttaaaacccckkkkLLLLeeeevvvveeeellll:::: Alternate for LLLLeeeevvvveeeellll1111::::. [1.0] SSSSuuuussssttttaaaaiiiinnnnLLLLeeeevvvveeeellll:::: Alternate for LLLLeeeevvvveeeellll2222::::. [1.0] RRRReeeelllleeeeaaaasssseeeeLLLLeeeevvvveeeellll:::: Alternate for LLLLeeeevvvveeeellll3333::::. [0.0] LLLLeeeevvvveeeellllAAAAttttttttaaaacccckkkk1111:::: LLLLeeeevvvveeeellllAAAAttttttttaaaacccckkkk2222:::: LLLLeeeevvvveeeellllDDDDeeeeccccaaaayyyy1111:::: LLLLeeeevvvveeeellllDDDDeeeeccccaaaayyyy2222:::: LLLLeeeevvvveeeellllRRRReeeelllleeeeaaaasssseeee1111:::: These five labels allow for easy specification of the levels for a six-segment envelope like those found in many commercial synthesizers. For any given envelope section, they should be used together as a set (with the six time labels described above) and not mixed with the other label types. NNNNooootttteeee:::: Midisynth makes no assumptions about the initial and final levels for its envelopes, as opposed to many synthesizers which require them to be zero levels. When using the above level specifiers, they must be preceeded by a SSSSttttaaaarrrrttttLLLLeeeevvvveeeellll:::: label and concluded with an EEEEnnnnddddLLLLeeeevvvveeeellll:::: label set to the values you desire (usually 0.0 in this case). If this is not done, the initial level defaults to 1.0, and the final release stage will PPPPaaaaggggeeee 11117777 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) be missing. EEEExxxxppppoooonnnneeeennnnttttiiiiaaaallllCCCCuuuurrrrvvvveeeessss:::: If "True", envelope will follow an exponential curve between levels. If "False, envelope will follow straight line segments between levels. Exponential curves are very useful for sounds with extended natural decays, such as pianos and guitars. ["False"] TTTTrrrriiiiggggggggeeeerrrrMMMMooooddddeeee:::: Defined the manner in which the envelope will respond to keydown and keyup events. Possible values are: """"SSSSiiiinnnngggglllleeeeTTTTrrrriiiiggggggggeeeerrrr"""" All voices share one envelope which rstarts only on first key press. """"MMMMuuuullllttttiiiipppplllleeeeTTTTrrrriiiiggggggggeeeerrrr"""" Not yet implemented. """"SSSSiiiinnnngggglllleeeeRRRReeeesssseeeetttt"""" All voices share one envelope which restarts with each new key press. """"MMMMuuuullllttttiiiipppplllleeeeRRRReeeesssseeeetttt"""" Each voice has its own envelope, each one restarts with each new key press. This is the default. SSSSttttaaaarrrrtttt:::: SSSSuuuussssttttaaaaiiiinnnnSSSSttttaaaarrrrtttt:::: Index of first segment in the sustain portion of the envelope. [0] EEEEnnnndddd:::: SSSSuuuussssttttaaaaiiiinnnnEEEEnnnndddd:::: Index of final segment in the sustain portion of the envelope. [2] LLLLooooooooppppSSSSttttaaaarrrrtttt:::: Index of first segment in the sustain portion of the envelope to be looped. [0] LLLLooooooooppppEEEEnnnndddd:::: Index of final segment in the sustain portion of the envelope to be looped. [2] LLLLooooooooppppTTTTyyyyppppeeee:::: The type of loop to be used. Possible values are: PPPPaaaaggggeeee 11118888 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) """"OOOOffffffff"""" No looping. This is the default. """"FFFFoooorrrrwwwwaaaarrrrdddd"""" Forward-moving loop. """"BBBBaaaacccckkkkwwwwaaaarrrrdddd"""" Backwards loop. """"FFFFoooorrrrwwwwaaaarrrrddddAAAAnnnnddddBBBBaaaacccckkkkwwwwaaaarrrrdddd"""" Loop runs forward to the final segment, then reverses up to the first segment, then repeats. SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppSSSSttttaaaarrrrtttt:::: Index of first segment in the envelope's sustain loop. [0] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppEEEEnnnndddd:::: Index of final segment in the envelope's sustain loop. [2] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppTTTTyyyyppppeeee:::: The type of loop for the sustain loop. See LLLLooooooooppppTTTTyyyyppppeeee::::, above. ["Off"] SSSSuuuussssttttaaaaiiiinnnnLLLLooooooooppppRRRReeeeppppeeeeaaaatttt:::: Not yet implemented. RRRReeeelllleeeeaaaasssseeeeSSSSttttaaaarrrrtttt:::: Index of first segment in the release portion of the envelope. [3] RRRReeeelllleeeeaaaasssseeeeEEEEnnnndddd:::: Index of final segment in the release portion of the envelope. [3] RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppSSSSttttaaaarrrrtttt:::: Index of first segment in the envelope's release loop. [3] RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppEEEEnnnndddd:::: Index of final segment in the envelope's release loop. [3] RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppTTTTyyyyppppeeee:::: The type of loop for the release loop. See LLLLooooooooppppTTTTyyyyppppeeee::::, above. ["Off"] RRRReeeelllleeeeaaaasssseeeeLLLLooooooooppppRRRReeeeppppeeeeaaaatttt:::: Not yet implemented. GGGGaaaatttteeeeIIIIggggnnnnoooorrrreeee:::: PPPPaaaaggggeeee 11119999 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) OOOOnnnneeeeSSSShhhhooootttt:::: If set to "True", the envelope will not stop at the end of the sustain portion and will continue on through the release. This is used for sounds which have no sustain, such as percussion sounds. ["False"] GGGGaaaaiiiinnnn:::: The output level multiplier for the envelope. Each stage's level will be scaled by this value. This is typically 0 for envelopes whose gain is controlled via GGGGaaaaiiiinnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeees such as NNNNooootttteeeeOOOOnnnnVVVVeeeelllloooocccciiiittttyyyy. [0.0] GGGGaaaaiiiinnnnddddBBBB:::: The output level in decibels for the envelope. Each stage's level will be scaled by this value. Same use as GGGGaaaaiiiinnnn::::. [-100] GGGGaaaatttteeeeEEEElllleeeemmmmeeeennnntttt:::: If this parameter is true, this envelope will be examined to determine if a given voice should continue to sound, or if the voice should be considered "finished" and shut off. If false, the state of this envelope will be ignored. ["True"] GGGGaaaaiiiinnnnCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: GGGGaaaaiiiinnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: Source for modulation of the envelope's volume. See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["NoteOnVelocity"] GGGGaaaaiiiinnnnCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: GGGGaaaaiiiinnnnMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: The depth of the previous modulation source. For most modulating sources, the resulting gain will be between 0.0 and GainModulationDepth. [1.0] AAAAttttttttaaaacccckkkkTTTTiiiimmmmeeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: AAAAttttttttaaaacccckkkkTTTTiiiimmmmeeeeCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: Source for modulation of the envelope's attack time. This must be a _s_t_a_t_i_c source. See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["None"] AAAAttttttttaaaacccckkkkTTTTiiiimmmmeeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: AAAAttttttttaaaacccckkkkTTTTiiiimmmmeeeeCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: The depth of the previous modulation source. For most modulating sources, the resulting time will be original_time + (AttackTimeControlDepth * n), where 'n' is between 0 and 1.0. [0.0] PPPPaaaaggggeeee 22220000 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) DDDDeeeeccccaaaayyyyTTTTiiiimmmmeeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnSSSSoooouuuurrrrcccceeee:::: DDDDeeeeccccaaaayyyyTTTTiiiimmmmeeeeCCCCoooonnnnttttrrrroooollllSSSSoooouuuurrrrcccceeee:::: Source for modulation of the envelope's decay time. This must be a _s_t_a_t_i_c source. See the section on CCCCOOOONNNNTTTTRRRROOOOLLLL SSSSOOOOUUUURRRRCCCCEEEE AAAANNNNDDDD MMMMOOOODDDDUUUULLLLAAAATTTTIIIIOOOONNNN DDDDEEEEPPPPTTTTHHHH PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS for details. ["None"] DDDDeeeeccccaaaayyyyTTTTiiiimmmmeeeeMMMMoooodddduuuullllaaaattttiiiioooonnnnDDDDeeeepppptttthhhh:::: DDDDeeeeccccaaaayyyyTTTTiiiimmmmeeeeCCCCoooonnnnttttrrrroooollllDDDDeeeepppptttthhhh:::: The depth of the previous modulation source. For most modulating sources, the resulting time will be original_time + (DecayTimeControlDepth * n), where 'n' is between 0 and 1.0. [0.0] CCCCOOOOMMMMBBBBIIIINNNNAAAATTTTIIIIOOOONNNN PPPPRRRREEEESSSSEEEETTTTSSSS Combination presets are a special class of presets which allow a single MIDI patch to combine up to 128 other presets in a variety of ways. Each individual preset referenced by a combination must exist as a separate file. Each of these individual presets may be mapped into a portion of the keyboard range or velocity range in a manner similar to the way individual samples may be mapped into portions of an oscillator's range. Combination parameters are the highest-level parameters available; they will modify or (in a few cases) override any preset parameter of the same type. Combination presets are extremely powerful. By allowing any arbitrary keyboard or velocity range to reference an entire preset, each note on the keyboard can be configured to have its own sample with its own unique filters and envelopes. Combination presets may be nested, i.e., combination preset A can reference preset B, which itself is a combination, and so forth. Keyboard ranges may be arbitrarily overlapped and/or layered to allow the creation of large ensemble presets. Each referenced preset is called a ZZZZoooonnnneeee, and the ZZZZoooonnnneeee subsection of the combination is described below, as well as the zone parameters. CCCCOOOOMMMMBBBBIIIINNNNAAAATTTTIIIIOOOONNNN HHHHEEEEAAAADDDDEEEERRRR AAAANNNNDDDD PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS A combination preset begins with the same first two lines as a regular preset (see the top of this man page), but instead of using the GGGGeeeennnneeeerrrraaaallll, OOOOsssscccciiiillllllllaaaattttoooorrrrNNNN, etc., headers, a single header, CCCCoooommmmbbbbiiiinnnnaaaattttiiiioooonnnn, is used, followed by the following parameters: GGGGaaaaiiiinnnn:::: The overall volume for this combination preset. This adjusts the volume of all preset zones. [1.0] GGGGaaaaiiiinnnnddddBBBB:::: The overall gain in decibels for this combination preset. [0.0] TTTTrrrraaaannnnssssppppoooosssseeee:::: The interval in integer semitones to transpose the entire combination. [0] PPPPaaaaggggeeee 22221111 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) TTTTuuuunnnneeee:::: The amount in semitones to adjust the pitch of the combination. [0.0] OOOOuuuuttttBBBBuuuussss:::: The output bus assignment for the combination. See the OOOOuuuuttttBBBBuuuussss:::: description in the GGGGeeeennnneeeerrrraaaallll parameters section for details. ZZZZOOOONNNNEEEE SSSSUUUUBBBBSSSSEEEECCCCTTTTIIIIOOOONNNN AAAANNNNDDDD PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS The zone subsection begins with the first ZZZZoooonnnneeee header and ends with the label EEEEnnnnddddZZZZoooonnnneeeessss. Each preset zone is separated by a ZZZZoooonnnneeee header. Many of the parameters are identical to those in the Sample subsection of the Oscillator section. The possible zone parameters are: NNNNaaaammmmeeee:::: The full pathname of the preset file for the current zone. Required for a zone to exist, and no default. GGGGaaaaiiiinnnn:::: The overall volume for this preset. [1.0] GGGGaaaaiiiinnnnddddBBBB:::: The overall gain in decibels for this preset. [0.0] TTTTrrrraaaannnnssssppppoooosssseeee:::: The interval in integer semitones to transpose the preset. [0] TTTTuuuunnnneeee:::: The amount in semitones to adjust the pitch of the preset. [0.0] OOOOuuuuttttBBBBuuuussss:::: The output bus assignment for the zone. See the OOOOuuuuttttBBBBuuuussss:::: description in the GGGGeeeennnneeeerrrraaaallll parameters section for details. NNNNooootttteeeeMMMMaaaappppVVVVaaaalllluuuueeeeLLLLoooowwwweeeerrrr:::: Specifies the lower limit of the keyboard range in which this preset will sound, as a MIDI key number. [1] NNNNooootttteeeeMMMMaaaappppVVVVaaaalllluuuueeeeUUUUppppppppeeeerrrr:::: Specifies the upper limit of the keyboard range in which this preset will sound, as a MIDI key number. [127] NNNNooootttteeeeMMMMaaaappppNNNNooootttteeeeLLLLoooowwwweeeerrrr:::: NNNNooootttteeeeMMMMaaaappppNNNNoooottttaaaattttiiiioooonnnnLLLLoooowwwweeeerrrr:::: Specifies the lower limit of the keyboard range in which this preset will sound, as a note name ["C-1"] NNNNooootttteeeeMMMMaaaappppNNNNooootttteeeeUUUUppppppppeeeerrrr:::: PPPPaaaaggggeeee 22222222 ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) ssssyyyynnnntttthhhhpppprrrreeeesssseeeetttt((((4444)))) NNNNooootttteeeeMMMMaaaappppNNNNoooottttaaaattttiiiioooonnnnUUUUppppppppeeeerrrr:::: Specifies the upper limit of the keyboard range in which this preset will sound, as a note name. ["G9"] VVVVeeeelllloooocccciiiittttyyyyMMMMaaaappppLLLLoooowwwweeeerrrr:::: Specifies the lower limit of the keyboard velocity range for which this preset will sound. [1] VVVVeeeelllloooocccciiiittttyyyyMMMMaaaappppUUUUppppppppeeeerrrr:::: Specifies the upper limit of the keyboard velocity range for which this preset will sound. [127] PPPPRRRREEEESSSSEEEETTTT FFFFIIIILLLLEEEE NNNNAAAAMMMMIIIINNNNGGGG CCCCOOOONNNNVVVVEEEENNNNTTTTIIIIOOOONNNNSSSS A synthesizer preset file is identified by mmmmiiiiddddiiiissssyyyynnnntttthhhh(1) and by the desktop using the first 8 or so characters in the file, so a preset may be named anything you wish. However, if you create preset files which you wish to be a part of a General MIDI 128-preset bank directory, all preset files must follow the following naming convention: For presets 1 through 128, the first 4 characters of the file's name must be in the form NNNNNNNNNNNN____, where NNNNNNNNNNNN is the General MIDI preset number of the preset expressed as three digits. For example, preset 4 would begin with "004_", preset 27 would begin with "027_", and preset 112 would begin with "112_". The remainder of the name may be anything, but it is useful to have it be descriptive of the preset's type. For now, the percussion preset to be loaded for channel 10 must be named "PercussionMap.preset". SSSSEEEEEEEE AAAALLLLSSSSOOOO synthpanel(1), midisynth(1), midikeys(1) PPPPaaaaggggeeee 22223333